// 固定的接口地址
const url_address = 'http://localhost:8080/api/v1';
// 对象形式向后台请求数据
function obj_Ajax(type, url, data, callback) {
    $.ajax({
        url: url_address + url,
        type: type,
        data: data,
        success: function (resData) {
            callback(resData);
        }
    });
}
// 表单形式向后台请求数据
function formData_Ajax(type, url, data, callback) {
    $.ajax({
        url: url_address + url,
        type: type,
        data: data,
        // 表单提交的cp组合
        contentType: false,
        processData: false,
        success: function (resData) {
            callback(resData);
        }
    });
}

// 实现自动监测是否是formdata
function myAjax(type, url, data, callback) {
    // 检测是否是表格
    let formData = data instanceof FormData;
    // 如果是，就用表单形式向后台请求数据
    if (formData) {
        formData_Ajax(type, url, data, callback);
        // 否则，则用象形式向后台请求数据
    } else {
        obj_Ajax(type, url, data, callback);
    }
}



// 热门排行-渲染-----------------------------------------------
function Top_ranking() {
    myAjax('GET', '/index/rank', null, function (resData) {
        let Top_ranking = template('Top_ranking', resData);
        $('.hotrank_list').html(Top_ranking);
        // console.log(resData);
    });
};
// 调用
Top_ranking();



// 最新评论-渲染--------------------------------------------------
function new_comments() {
    myAjax('GET', '/index/latest_comment', null, function (resData) {
        let new_comments = template('new_comment', resData);
        $('.comment_list').html(new_comments);
        // console.log(resData);
    })
}
// 调用
new_comments();


// 焦点关注-渲染----------------------------------------------------
function focus() {
    myAjax('GET', '/index/attention', null, function (resData) {
        let focus = template('focus', resData);
        $('.content_list').html(focus);
        // console.log(resData);
    });
}
// 调用
focus();



//导航栏-渲染---------------------------------------------------------
function navigation_bar() {
    myAjax('GET', '/index/category', null, function (resData) {
        let navigation_bar = template('navigation_bar', resData);
        $('.left_menu').html(navigation_bar);
        // console.log(resData);
    });
}
// 调用
navigation_bar();



// 首页图片-------------------------------------------------------------
function home_picture() {
    myAjax('GET', '/index/hotpic', null, function (resData) {
        let res_Img = template('home_picture', resData);
        $('.focus_list').html(res_Img);
        // console.log(resData);
    });
}
// 调用
home_picture();

// 最新资讯-------------------------------------------------------------
function new_information(page = 1, perpage = 6) {
    let params = {
        key: $('#search_txt').val(),
        type: null,
        page: page,
        perpage: perpage
    }
    myAjax('GET', '/index/search', params, function (resData) {
        // console.log(resData.data);
        resData.data.data.forEach(i => {
            i.content = htmlStr(i.content);
        })
        // 调用模板引擎函数加工处理
        let new_information = template('new_information', resData.data);
        // 写入
        $('#common_news').html(new_information);
        // 把接收到的总数和页数传过去给分页
        paging(resData.data.totalCount, page);
        // console.log(resData.data.totalCount);
    })
}
// 返回值到Html
function htmlStr(value) {
    return $('<div/>').html(value).text();
}
// 调用
new_information();



// 分页---------------------------------------------------------------
function paging(totalCount, page) {    // 两个参数：数据总数，页码
    layui.use('laypage', function () {
        var laypage = layui.laypage;
        laypage.render({
            elem: 'test1', //注意，这里的 test1 是 ID，不用加 # 号
            count: totalCount,//数据总数，从服务端得到
            // 添加起始页为当前页码
            curr: page,
            // 后台默认每页为6条，因此这里也设置每翻一页就6条
            limit: 6,
            // 切换分页的回调
            // 当分页被切换时触发，函数返回两个参数：obj（当前分页的所有选项值）、first（是否首次，一般用于初始加载的判断）
            jump: function (obj, first) {
                console.log(obj.curr);//得到当前页，以便向服务端请求对应页的数据。
                console.log(obj.limit) //得到每页显示的条数
                if (!first) {
                    new_information(obj.curr, obj.limit);
                    //do something
                }
            },
        });
    });
}